curl --request POST \
--url https://api.zelinqa.ai/v1/sessions/{session_id}/conversion \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"metadata": {}
}'import requests
url = "https://api.zelinqa.ai/v1/sessions/{session_id}/conversion"
payload = { "metadata": {} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({metadata: {}})
};
fetch('https://api.zelinqa.ai/v1/sessions/{session_id}/conversion', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"conversion_id": "<string>",
"request_id": "<string>"
}{
"code": "unauthorized",
"message": "Clé d'intégration absente ou invalide.",
"request_id": "req_9000",
"details": {}
}{
"code": "insufficient_scope",
"message": "Cette clé ne permet pas de publier une configuration.",
"request_id": "req_9001",
"details": {
"required_scopes": [
"configuration:publish"
],
"granted_scopes": [
"configuration:read",
"configuration:write"
]
}
}[Déprécié 0.9] Déclarer le résultat d'une conversation
Route de la bêta 0.9. Remplacée par
POST /v1/sessions/{session_id}/feedback, dont le vocabulaire est générique
et ne suppose pas un contexte commercial.
Correspondance : purchase et lead → result: success avec le label
d’origine ; abandon → result: failure ; other → result: partial.
curl --request POST \
--url https://api.zelinqa.ai/v1/sessions/{session_id}/conversion \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"metadata": {}
}'import requests
url = "https://api.zelinqa.ai/v1/sessions/{session_id}/conversion"
payload = { "metadata": {} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({metadata: {}})
};
fetch('https://api.zelinqa.ai/v1/sessions/{session_id}/conversion', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"conversion_id": "<string>",
"request_id": "<string>"
}{
"code": "unauthorized",
"message": "Clé d'intégration absente ou invalide.",
"request_id": "req_9000",
"details": {}
}{
"code": "insufficient_scope",
"message": "Cette clé ne permet pas de publier une configuration.",
"request_id": "req_9001",
"details": {
"required_scopes": [
"configuration:publish"
],
"granted_scopes": [
"configuration:read",
"configuration:write"
]
}
}Autorisations
Clé d'intégration préfixée nbq_live_, envoyée dans
Authorization: Bearer nbq_live_… et résolue par l'authorizer Lambda de
l'API Gateway publique. L'authorizer valide la clé, puis injecte en amont
du service les headers de contexte x-tenant-id, x-nbq-id et x-scopes —
x-scopes étant la liste des scopes de la clé séparés par des virgules,
par exemple runtime,configuration:read.
Ces headers ne sont jamais acceptés depuis le client : toute valeur entrante
est écrasée. Une clé absente ou invalide produit 401 au niveau de la
passerelle ; une clé valide sans le scope requis produit 403 avec le code
insufficient_scope.
En-têtes
Optionnelle en 0.9 ; obligatoire sur toutes les mutations V1.
8 - 128Paramètres de chemin
Identifiant opaque de session attribué par NBQ à la création.
1 - 128